package com.naiterui.ehp.bs.emr.service;

import java.util.List;
import java.util.Set;

import org.springframework.web.multipart.MultipartFile;

import com.naiterui.common.repository.page.PageParamVO;
import com.naiterui.common.repository.page.PageVO;
import com.naiterui.ehp.bp.bo.emr.InquireCaseBO;
import com.naiterui.ehp.bp.bo.emr.PatientDiseaseBO;
import com.naiterui.ehp.bp.support.exception.BusinessException;
import com.naiterui.ehp.bs.emr.utils.enums.DiseaseCycle;
import com.naiterui.ehp.bs.emr.vo.UploadFileVO;
import com.naiterui.ehp.bs.emr.vo.patient.PatientDiseaseVO;

/**
 * @Description 患者病情业务接口
 * @Author gongbaoqiang
 * @Date 2019/11/28 12:10 PM
 */
public interface IPatientDiseaseService {

    /**
     * 病情周期列表
     *
     * @return
     * @throws BusinessException
     */
    List<DiseaseCycle> cycleList() throws BusinessException;

    /**
     * 患者添加病情
     *
     * @param patientDisease
     */
    String add(PatientDiseaseVO patientDisease) throws BusinessException;

    /**
     * <pre>
     *     获取病情详情
     * </pre>
     *
     * @param id
     * @return
     */
    PatientDiseaseVO detail(String id) throws BusinessException;

    /**
     * 添加病情上传图片
     * @param files
     * @return
     */
    List<String> uploadDiseaseImg(MultipartFile[] files);

    /**
     * 获取病情诊断
     *
     * @param recordId
     * @return
     */
    List<String> getDiagnosis(String recordId);

    /**
     * 病情列表
     *
     * @return
     * @throws BusinessException
     */
    PageVO<PatientDiseaseVO> list(Long patientId, PageParamVO pageParamVO) throws BusinessException;


    /**
     * 上传pdf
     *
     * @param files
     * @return
     * @throws BusinessException
     */
    List<UploadFileVO> uploadPatientFile(MultipartFile[] files) throws BusinessException;


    /**
     * 获取病情诊断
     *
     * @param recordId
     * @return
     */
    InquireCaseBO inquirerCase(String recordId) throws BusinessException;

    /**
     * 获取病情信息
     *
     * @param diseaseId
     * @return
     */
    PatientDiseaseBO getPatientDisease(String diseaseId);

    /**
     * 获取患者病情
     *
     * @param patientId
     * @return
     */
    public PatientDiseaseBO getDisease(Long patientId);

    /**
     * 病情信息集
     *
     * @param diseaseIds
     * @return
     */
    List<InquireCaseBO> inquirerDiseases(Set<String> diseaseIds);

    /**
     * 病例记录绑定会话
     *
     * @param recordId
     * @param sessionId
     */
    void sessionBind(String recordId, String sessionId);
}
